home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / Image / GIS.php < prev    next >
PHP Script  |  2004-03-24  |  5KB  |  211 lines

  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | PEAR :: Image :: GIS                                                   |
  5. // +------------------------------------------------------------------------+
  6. // | Copyright (c) 2002-2004 Jan Kneschke <jan@kneschke.de> and             |
  7. // |                         Sebastian Bergmann <sb@sebastian-bergmann.de>. |
  8. // +------------------------------------------------------------------------+
  9. // | This source file is subject to version 3.00 of the PHP License,        |
  10. // | that is available at http://www.php.net/license/3_0.txt.               |
  11. // | If you did not receive a copy of the PHP license and are unable to     |
  12. // | obtain it through the world-wide-web, please send a note to            |
  13. // | license@php.net so we can mail you a copy immediately.                 |
  14. // +------------------------------------------------------------------------+
  15. //
  16. // $Id: GIS.php,v 1.14 2004/01/01 10:31:36 sebastian Exp $
  17. //
  18.  
  19. require_once 'Image/Color.php';
  20. require_once 'Image/GIS/Parser.php';
  21. require_once 'Image/GIS/Renderer.php';
  22.  
  23. /**
  24. * ...
  25. *
  26. * The following example draws the region around the
  27. * Germany city of Kiel which is Jan's home town:
  28. *
  29. *   <?php
  30. *   require_once 'Image/GIS.php';
  31. *
  32. *   // Create new map.
  33. *   $map = new Image_GIS(
  34. *     'width'  =>  960,
  35. *     'height' => 1280,
  36. *     'range'  => array(
  37. *       'x1' => 9.7,
  38. *       'x2' => 10.5,
  39. *       'y1' => 54.2,
  40. *       'y2' => 54.7
  41. *     )
  42. *   );
  43. *
  44. *   // Political
  45. *   $map->addDataFile('germany_ponet.e00',  'black');
  46. *
  47. *   // Roads
  48. *   $map->addDataFile('germany_rdline.e00', 'gray');
  49. *
  50. *   // Populated Places
  51. *   $map->addDataFile('germany_pppoly.e00', 'green');
  52. *
  53. *   // Drainage
  54. *   $map->addDataFile('germany_dnnet.e00',  'blue');
  55. *
  56. *   $map->saveImage('kiel.png');
  57. *   ?>
  58. *
  59. * @version  $Revision: 1.14 $
  60. * @since    Image_GIS 1.0.0
  61. */
  62. class Image_GIS {
  63.     /**
  64.     * Set to TRUE to enable debugging.
  65.     *
  66.     * @var boolean $debug
  67.     */
  68.     var $debug;
  69.  
  70.     /**
  71.     * Image_GIS_Parser sub-class object.
  72.     *
  73.     * @var Image_GIS_Parser $parser
  74.     */
  75.     var $parser;
  76.  
  77.     /**
  78.     * Image_GIS_Renderer sub-class object.
  79.     *
  80.     * @var Image_GIS_Renderer $renderer
  81.     */
  82.     var $renderer;
  83.  
  84.     /**
  85.     * Constructor.
  86.     *
  87.     * @param  array   $parameters
  88.     * @access public
  89.     */
  90.     function Image_GIS($parameters = array()) {
  91.         $this->debug = isset($parameters['debug']) ? $parameters['debug'] : false;
  92.  
  93.         $this->setParser(
  94.           isset($parameters['parser'])   ? $parameters['parser']   : 'E00',
  95.           isset($parameters['cache'])    ? $parameters['cache']    : false,
  96.           isset($parameters['cacheDir']) ? $parameters['cacheDir'] : '/tmp'
  97.         );
  98.  
  99.         $this->setRenderer(
  100.           isset($parameters['renderer']) ? $parameters['renderer'] : 'GD',
  101.           isset($parameters['width'])    ? $parameters['width']    : 640,
  102.           isset($parameters['height'])   ? $parameters['height']   : 480
  103.         );
  104.  
  105.         if (isset($parameters['range']['x1']) &&
  106.             isset($parameters['range']['x2']) &&
  107.             isset($parameters['range']['y1']) &&
  108.             isset($parameters['range']['y2'])) {
  109.             $this->setRange(
  110.               $parameters['range']['x1'],
  111.               $parameters['range']['x2'],
  112.               $parameters['range']['y1'],
  113.               $parameters['range']['y2']
  114.             );
  115.         }
  116.     }
  117.  
  118.     /**
  119.     * Adds a datafile to the map.
  120.     *
  121.     * @param  string  $dataFile
  122.     * @param  mixed   $color
  123.     * @return boolean
  124.     * @access public
  125.     */
  126.     function addDataFile($dataFile, $color) {
  127.         return $this->parser->addDataFile($dataFile, $color);
  128.     }
  129.  
  130.     /**
  131.     * Returns the range of the data to be rendered.
  132.     *
  133.     * @return array
  134.     * @access public
  135.     * @since  Image_GIS 1.0.1
  136.     */
  137.     function getRange() {
  138.         return $this->renderer->getRange();
  139.     }
  140.  
  141.     /**
  142.     * Renders the image.
  143.     *
  144.     * @access public
  145.     */
  146.     function render() {
  147.         $this->renderer->render($this->parser->parse());
  148.     }
  149.  
  150.     /**
  151.     * Saves the rendered image to a given file.
  152.     *
  153.     * @param  string  $filename
  154.     * @return boolean
  155.     * @access public
  156.     */
  157.     function saveImage($filename) {
  158.         $this->render();
  159.  
  160.         return $this->renderer->saveImage($filename);
  161.     }
  162.  
  163.     /**
  164.     * Sets the Image_GIS_Parser sub-class to be used
  165.     * to parse a data file.
  166.     *
  167.     * @param  string  $parser
  168.     * @param  boolean $cache
  169.     * @access public
  170.     */
  171.     function setParser($parser, $cache) {
  172.         $this->parser = &Image_GIS_Parser::factory($parser, $cache, $this->debug);
  173.     }
  174.  
  175.     /**
  176.     * Sets the range of the data to be rendered.
  177.     *
  178.     * @param  float $x1
  179.     * @param  float $x2
  180.     * @param  float $y1
  181.     * @param  float $y2
  182.     * @access public
  183.     */
  184.     function setRange($x1, $x2, $y1, $y2) {
  185.         $this->renderer->setRange($x1, $x2, $y1, $y2);
  186.     }
  187.  
  188.     /**
  189.     * Sets the Image_GIS_Renderer sub-class to be used
  190.     * to render an image.
  191.     *
  192.     * @param  string  $renderer
  193.     * @access public
  194.     */
  195.     function setRenderer($renderer, $width, $height) {
  196.         $this->renderer = &Image_GIS_Renderer::factory($renderer, $width, $height, $this->debug);
  197.     }
  198.  
  199.     /**
  200.     * Shows the rendered image.
  201.     *
  202.     * @access public
  203.     */
  204.     function showImage() {
  205.         $this->render();
  206.  
  207.         $this->renderer->showImage();
  208.     }
  209. }
  210. ?>
  211.